//
// Created by ls on 23-12-21.
//
#include <emmintrin.h>
#include <iostream>
#include <vector>

// string 的赋值操作

/*
 *  string& operator=(const char *s);         // char * 类型字符串，赋值给当前的字符串
 *  string& operator=(const string &s);       // 把字符串 s 赋给当前的字符串
 *  string& operator=(char c);                // 把字符赋值给当前的字符
 *  string& assign(const char *s);            // 把字符串 s 赋值给当前的字符串
 *  string& assign(const char *s, int n);     // 把字符串 s 的前 n 个字符付给当前的字符串
 *  string& assign(const string &s);          // 把字符串 s 赋给当前字符串
 *  string& assign(int n, char c);            // 用 n 个字符 c 赋给当前字符串
 */

void test01()
{
  const std::string str1 = "hello world!";
  std::cout << "str1 = " << str1 << std::endl;

  const std::string& str2 = str1;
  std::cout << "str2 = " << str2 << std::endl;

  std::string str3;
  str3 = 'a';
  std::cout << "str3 = " << str3 << std::endl;

  std::string str4;
  str4.assign("hello C++");
  std::cout << "str4 = " << str4 << std::endl;

  std::string str5;
  // str5.assign("hello C++", 5);
  str5.assign(str1, 5);        // 当传入的第一个参数 是一个对象时，会变成只复制 数字位 之后的字符
  std::cout << "str5 = " << str5 << std::endl;

  std::string str6;
  str6.assign(str5, 1);
  std::cout << "str6 = " << str6 << std::endl;

  std::string str7;
  str7.assign(10, 'w');
  std::cout << "str7 = " << str7 << std::endl;

}

int main()
{
  test01();
  return 0;
}